package com.newly.center.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.newly.common.base.entity.R;
import com.newly.common.base.entity.auth.ICurrentTenant;
import com.newly.common.base.entity.business.Dto.SiteDto;
import com.newly.common.base.entity.business.Po.Site;
import com.newly.common.base.entity.business.Vo.DetailsVo;
import com.newly.common.core.utils.PageUtil;

import java.util.List;
import java.util.Map;

/**
 * @anthor sbq
 * @date 2021/10/26 14:22
 */
public interface SiteService extends IService<Site> {

    /**
     * 分页查询站点列表
     *
     * @param siteDto
     * @param currentTenant
     * @return
     */
    PageUtil getPage(ICurrentTenant currentTenant, SiteDto siteDto);

    /**
     * 根据id查询站点基础信息和违法历史记录
     *
     * @return
     */
    DetailsVo<Site> getDetailsById(Long id, Integer offset);

    /**
     * 编辑
     *
     * @param site
     * @return
     */
    void edit(Site site);


    /**
     * 保存
     *
     * @param site
     * @return
     */
    void insert(Site site);

    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    R delete(Long[] ids);

    /**
     * 获取所有站点名称
     *
     * @return
     */
    List<String> getSiteNames();

    /**
     * 获取所有站点名称与id的键值对
     *
     * @return
     */
    List<Map<String, Object>> getSiteNameAndId();

    /**
     * 站点名称是否重复
     *
     * @param siteName
     * @return
     */
    boolean repeat(String siteName);

    /**
     * 统计最近X天每个站点的超重次数
     *
     * @param offset     偏移量
     * @param companyIds 公司id
     * @return
     */
    List<Site> countOverweightNum(Integer offset, List<Long> companyIds);

    /**
     * 通过id获取站点信息
     *
     * @param siteIds 站点id
     * @return List Site.class
     */
    List<Site> getByIds(List<String> siteIds);
}
